﻿/*
   Copyright 2012 University of Southampton

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
*/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using uk.ac.soton.ses.DAL;

namespace uk.ac.soton.ses
{
    internal class CompareSettings
    {
        public CompareFlags UnchangedProperties_MatchAll { get; set; }
        public CompareFlags ChangedProperties_MatchAll { get; set; }
        public CompareFlags UnchangedProperties_MatchAtLeastOne { get; set; }
        public CompareFlags ChangedProperties_MatchAtLeastOne { get; set; }
        public bool MultipleMatchesPermitted { get; set; }
        public ChangedExperimentDataFileType ChangedExperimentDataFileType { get; set; }

        /// <summary>
        /// The size in bytes which the files being compared will greater than. Set to -1 to ensure all files are checked. Set to 0 to ensure the file has some content
        /// </summary>
        public Int64 FileSizeGreaterThan { get; set; }

        public CompareSettings()
        {
        }

        public CompareSettings(CompareFlags unchangedProperties_MatchAll, CompareFlags changedProperties_MatchAll, CompareFlags unchangedProperties_MatchAtLeastOne, CompareFlags changedProperties_MatchAtLeastOne, bool multipleMatchesPermitted, ChangedExperimentDataFileType changedExperimentDataFileType)
        {
            this.UnchangedProperties_MatchAll = unchangedProperties_MatchAll;
            this.ChangedProperties_MatchAll = changedProperties_MatchAll;
            this.UnchangedProperties_MatchAtLeastOne = unchangedProperties_MatchAtLeastOne;
            this.ChangedProperties_MatchAtLeastOne = changedProperties_MatchAtLeastOne;
            this.MultipleMatchesPermitted = multipleMatchesPermitted;
            this.ChangedExperimentDataFileType = changedExperimentDataFileType;
        }
    }
}
